Snowflakeからmixpanelに直接連携!Warehouse Eventsを使ってみる
ミックスパネラーの國崎です。
今回はSnowflakeにあるデータをmixpanelに直接投入することができる機能Warehouse Eventsを使ってみたので、その所感をお伝えします。
本記事でわかること
- Snowflake→mixpanelの連携をWarehouse Eventsを使ってやる方法
「Warehouse Eventsとは?」について知りたい方は以下記事をご覧ください。
mixpanelにデータウェアハウスを直接つなぐWarehouse Events機能の紹介
Snowflakeでmixpanel連携用のテーブルを用意する
Snowflakeからmixpanelの連携にあたり以下のカラムは必須になってきます。
- Event Name
- Event Time
- Distinct ID
- Insert Time
- Insert ID
今回は以下のテーブルをサンプルで用意しました。
Event_Name | Event_Time | Distinct_ID | Insert_Time | Insert_ID |
---|---|---|---|---|
来店した | 2023-08-01 10:00:00 | 7073d103-1d84-5483-903e-f9ba5d0746f9 | 2023-08-01 12:00:00 | 7073d103-1d84-5483-903e-f9ba5d0746f9-1680318111 |
本を読んだ | 2023-08-01 11:00:00 | 3896ab1e-1326-5403-ac33-8984cdf9baf4 | 2023-08-01 13:00:00 | 3896ab1e-1326-5403-ac33-8984cdf9baf4-1680318111 |
ご飯を食べた | 2023-08-01 12:00:00 | 52336ef6-dd78-582a-8185-a099e0bcf269 | 2023-08-01 14:00:00 | 52336ef6-dd78-582a-8185-a099e0bcf269-1680318111 |
注意点としてはEvent Timeはイベントが発生した時間で、Insert Timeはレコードに追加された時間になります。
同じ時間でも定義が違うことに注意しましょう。
mixpanelとSnowflakeで実際にやってみる
mixpanelでは「Warehouse Sources」で連携するデータウェアハウスの設定を行い、「Warehouse Data」で連携するデータの設定を行います。
今回検証を進める中で気づきましたが、mixpanelで生成されたコードをSnowflakeに流しながら設定を進める感じになります。
そのため設定をされる際は両方の画面を2画面とかにしながら進めるとやりやすいかなと思いました。
Warehouse Sourcesでデータウェアハウスを設定
1.mixpanel>Project Settings>Warehouse SourcesでSnowflakeをクリック。
アカウント名は以下をSnowflakeのワークスペースに流し込んだらわかります。
SELECT REGEXP_REPLACE(wl.value:host::varchar, '\.snowflakecomputing\.com$', '') FROM TABLE(FLATTEN(INPUT => PARSE_JSON(SYSTEM$ALLOWLIST()))) AS wl WHERE wl.value:type::varchar = 'SNOWFLAKE_DEPLOYMENT_REGIONLESS';
3.「Username」「Role」を入力。KeyPairを選択したら書き出されたコードをSnowflakeのクエリで実行します。
Snowflakeで問題なく実行されたNextへ。
4.Storage IntegrationでGoogle Cloud Storageのバケットに書き出すコードが払い出されるので、それをSnowflakeのクエリで実行します。
5.オプションでSnowflakeのデータベースを指定したい場合は設定する事もできます。
データベース名を設定後、以下のコードをSnowflakeのクエリで実行します。
GRANT USAGE ON DATABASE "指定しだデータベース" TO ROLE 作成したROLE; GRANT USAGE ON ALL SCHEMAS IN DATABASE "指定しだデータベース" TO ROLE 作成したROLE; GRANT SELECT ON ALL TABLES IN DATABASE "指定しだデータベース" TO ROLE 作成したROLE; GRANT SELECT ON ALL VIEWS IN DATABASE "指定しだデータベース" TO ROLE 作成したROLE;
Warehouse Dataで連携するデータの設定
Project Settings > Warehouse Data でAdd Warehouse Eventをクリック。
表示された画面左側で読み込むSnowflakeのSource・Dataset・Tableを選択し、必須カラムのEvent Name・Event Time・Distinct ID・Insert Time・Insert IDがそれぞれどのカラムにあたるかを指定します。
Create EventをクリックしたらStatusがActiveになっていることを確認します。
レポート画面で確認してみると、Snowflakeで入れたイベントが反映されているのが確認できました!
連携における注意点
今回検証をして気づきましたが、Event_Timeを2023/4/1にしていて、それ以降計測がないイベントデータは反映がされていませんでした。
なぜこれが反映されないのか、調査したところmixpanelのドキュメントに「Mixpanel のレポート ドロップダウン メニューでは、過去 30 日以内に発生しなかったイベントが非表示になります。」と記載がありましたので参考にしてください。
以上、Snowflakeのデータをmixpanelに連携する検証記事でした。
今回の検証とは逆のパターンになるmixpanelのデータをSnowflakeに書き出す検証記事は以下をご覧ください。
MixpanelからSnowflakeにパイプラインを使ってデータを送信する
mixpanelのお問い合わせはクラスメソッドまで!
クラスメソッドではmixpanelの導入支援、伴走支援を手厚く行なっております。
mixpanelがどんなもんか知りたい!使い方を教えて欲しい!もっと活用方法を知りたい!
と言う方はぜひぜひクラスメソッドまでお問い合わせください!!